// -*- C++ -*-
/***************************************************************************
 *
 * cwctype - C++ Standard library interface to the ANSI C header wctype.h
 *
 * $Id: //stdlib/dev/include/ansi/cwctype#19 $
 *
 ***************************************************************************
 *
 * Copyright (c) 1994-2005 Quovadx,  Inc., acting through its  Rogue Wave
 * Software division. Licensed under the Apache License, Version 2.0 (the
 * "License");  you may  not use this file except  in compliance with the
 * License.    You    may   obtain   a   copy   of    the   License    at
 * http://www.apache.org/licenses/LICENSE-2.0.    Unless   required    by
 * applicable law  or agreed to  in writing,  software  distributed under
 * the License is distributed on an "AS IS" BASIS,  WITHOUT WARRANTIES OR
 * CONDITIONS OF  ANY KIND, either  express or implied.  See  the License
 * for the specific language governing permissions  and limitations under
 * the License.
 * 
 **************************************************************************/

#include <rw/_defs.h>

#ifndef _RWSTD_NO_PURE_C_HEADERS
#  include <ansi/_cwctype.h>
#else

#ifndef _RWSTD_NO_DEPRECATED_C_HEADERS

#ifndef _RWSTD_NAMESPACE_STD_OPEN
#define _RWSTD_NAMESPACE_STD_OPEN 18

_RWSTD_NAMESPACE (std) { 

#endif   // _RWSTD_NAMESPACE_STD_OPEN


#include _RWSTD_ANSI_C_WCTYPE_H


#if _RWSTD_NAMESPACE_STD_OPEN == 18
#undef _RWSTD_NAMESPACE_STD_OPEN

}   // namespace std

#endif   // _RWSTD_NAMESPACE_STD_OPEN == 18

#else   // if defined (_RWSTD_NO_DEPRECATED_C_HEADERS)

#ifndef _RWSTD_CWCTYPE_INCLUDED
#define _RWSTD_CWCTYPE_INCLUDED

#include _RWSTD_ANSI_C_WCTYPE_H

#ifdef __hpux
#  include _RWSTD_ANSI_C_WCHAR_H
#endif   // __hpux

// #define WEOF when not #defined (see also <cwchar>)
#if !defined WEOF
#  ifndef _RWSTD_NO_WINT_T
#    define WEOF _RWSTD_STATIC_CAST (_RWSTD_WINT_T, -1)
#  else
#    define WEOF (-1)
#  endif
#endif   // WEOF

#if !defined (_RWSTD_NO_NAMESPACE) && !defined (_RWSTD_NO_HONOR_STD) && \
      !defined (_RWSTD_NO_USING_LIBC_IN_STD)

#  ifndef _RWSTD_NO_WCTYPE_H

namespace std {

#ifndef _RWSTD_NO_WCTRANS_T
    using ::wctrans_t;
#else
    typedef int wctrans_t;
#endif   // _RWSTD_NO_WCTRANS_T

#ifndef _RWSTD_NO_WCTYPE_T
    using ::wctype_t;
#else
    typedef unsigned wctype_t;
#endif   // _RWSTD_NO_WCTYPE_T

#ifndef _RWSTD_NO_WINT_T
    using ::wint_t;
#else
    typedef unsigned wint_t;
#endif   // _RWSTD_NO_WINT_T

#ifndef _RWSTD_NO_ISWALNUM
    using ::iswalnum;
#elif !defined (_RWSTD_NO_ISWALNUM_IN_LIBC)

    extern "C" int iswalnum (wint_t);
#else
#endif   // _RWSTD_NO_ISWALNUM

#ifndef _RWSTD_NO_ISWALPHA
    using ::iswalpha;
#elif !defined (_RWSTD_NO_ISWALPHA_IN_LIBC)

    extern "C" int iswalpha (wint_t);

#else
#endif   // _RWSTD_NO_ISWALPHA

#ifndef _RWSTD_NO_ISWCNTRL
    using ::iswcntrl;
#elif !defined (_RWSTD_NO_ISWCNTRL_IN_LIBC)

    extern "C" int iswcntrl (wint_t);

#else
#endif   // _RWSTD_NO_ISWCNTRL

#ifndef _RWSTD_NO_ISWCTYPE
    using ::iswctype;
#elif !defined (_RWSTD_NO_ISWCTYPE_IN_LIBC)

    extern "C" int iswctype (wint_t, wctype_t);

#else
#endif   // _RWSTD_NO_ISWCTYPE

#ifndef _RWSTD_NO_ISWDIGIT
    using ::iswdigit;
#elif !defined (_RWSTD_NO_ISWDIGIT_IN_LIBC)

    extern "C" int iswdigit (wint_t);

#else
#endif   // _RWSTD_NO_ISWDIGIT

#ifndef _RWSTD_NO_ISWGRAPH
    using ::iswgraph;
#elif !defined (_RWSTD_NO_ISWGRAPH_IN_LIBC)

    extern "C" int iswgraph (wint_t);

#else
#endif   // _RWSTD_NO_ISWGRAPH

#ifndef _RWSTD_NO_ISWLOWER
    using ::iswlower;
#elif !defined (_RWSTD_NO_ISWLOWER_IN_LIBC)

    extern "C" int iswlower (wint_t);

#else
#endif   // _RWSTD_NO_ISWLOWER

#ifndef _RWSTD_NO_ISWPRINT
    using ::iswprint;
#elif !defined (_RWSTD_NO_ISWPRINT_IN_LIBC)

    extern "C" int iswprint (wint_t);

#else
#endif   // _RWSTD_NO_ISWPRINT

#ifndef _RWSTD_NO_ISWPUNCT
    using ::iswpunct;
#elif !defined (_RWSTD_NO_ISWPUNCT_IN_LIBC)

    extern "C" int iswpunct (wint_t);

#else
#endif   // _RWSTD_NO_ISWPUNCT

#ifndef _RWSTD_NO_ISWSPACE
    using ::iswspace;
#elif !defined (_RWSTD_NO_ISWSPACE_IN_LIBC)

    extern "C" int iswspace (wint_t);

#else
#endif   // _RWSTD_NO_ISWSPACE

#ifndef _RWSTD_NO_ISWUPPER
    using ::iswupper;
#elif !defined (_RWSTD_NO_ISWUPPER_IN_LIBC)

    extern "C" int iswupper (wint_t);

#else
#endif   // _RWSTD_NO_ISWUPPER

#ifndef _RWSTD_NO_ISWXDIGIT
    using ::iswxdigit;
#elif !defined (_RWSTD_NO_ISWXDIGIT_IN_LIBC)

    extern "C" int iswxdigit (wint_t);

#else
#endif   // _RWSTD_NO_ISWXDIGIT

#ifndef _RWSTD_NO_TOWCTRANS
    using ::towctrans;
#elif !defined (_RWSTD_NO_TOWCTRANS_IN_LIBC)

    extern "C" wint_t towctrans (wint_t, wctrans_t);

#else
#endif   // _RWSTD_NO_TOWCTRANS

#ifndef _RWSTD_NO_TOWLOWER
    using ::towlower;
#elif !defined (_RWSTD_NO_TOWLOWER_IN_LIBC)

    extern "C" wint_t towlower (wint_t);

#else
#endif   // _RWSTD_NO_TOWLOWER

#ifndef _RWSTD_NO_TOWUPPER
    using ::towupper;
#elif !defined (_RWSTD_NO_TOWUPPER_IN_LIBC)

    extern "C" wint_t towupper (wint_t);

#else
#endif   // _RWSTD_NO_TOWUPPER

#ifndef _RWSTD_NO_WCTRANS
    using ::wctrans;
#elif !defined (_RWSTD_NO_WCTRANS_IN_LIBC)

    extern "C" wctrans_t wctrans (const char*);

#else
#endif   // _RWSTD_NO_WCTRANS

#ifndef _RWSTD_NO_WCTYPE
    using ::wctype;
#elif !defined (_RWSTD_NO_WCTYPE_IN_LIBC)

    extern "C" wctype_t wctype (const char*);

#else
#endif   // _RWSTD_NO_WCTYPE

}   // std

#  endif   // _RWSTD_NO_WCTYPE_H

#endif   // !_RWSTD_NO_NAMESPACE && !_RWSTD_NO_HONOR_STD && !_RWSTD_NO_USING_LIBC_IN_STD

#endif   // _RWSTD_CWCTYPE_INCLUDED

#endif   // _RWSTD_NO_DEPRECATED_C_HEADERS

#endif   // _RWSTD_NO_PURE_C_HEADERS
